home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #162 (19xx)(APS Electronic).zip / Bavarian #162 (19xx)(APS Electronic).adf / AMOS_DEMO.ASC < prev    next >
Text File  |  1978-04-24  |  27KB  |  1,038 lines

  1. Rem ---------------------------------------------------------------------
  2. Rem                            AMOS DEMO V3! 
  3. Rem    
  4. Rem                          BY Peter Hickman
  5. Rem
  6. Rem            Music composed and written by Allister Brimble
  7. Rem  
  8. Rem You cannot change this demo, but you may view it (its a bit untidy-  
  9. Rem     sorry) and you may use some of the commands from direct mode.  
  10. Rem    For more information please examine the text file on this disk  
  11. Rem                its called "IMPORTANT_TEXT_FILE.ASC".       
  12. Rem ---------------------------------------------------------------------
  13. Close Workbench 
  14. Default 
  15. Screen Close 0
  16. Led Off 
  17. DISK$="AMOS_DEMO:"
  18. MEMORY=Chip Free
  19. NO_FAST_MEM=0
  20. PASS=0
  21. CONTROL=0
  22. If MEMORY<250000
  23.    NO_FAST_MEM=-1
  24.    Close Workbench 
  25. End If 
  26. Repeat 
  27.    Load Iff DISK$+"TITLEPAGE.IFF",0
  28.    Screen Hide 0
  29.    Hide On 
  30.    Screen Display 0,,-211,,200
  31.    Screen Show 0
  32.    PICCYON_DOWN[0]
  33.    BOUNCE[0]
  34.    Timer=0
  35.    If NO_FAST_MEM=-1
  36.       TUNE
  37.       WAITSET[11700]
  38.       Music Off 
  39.       Erase 2
  40.    End If 
  41.    If PASS=0 and NO_FAST_MEM=0 Then TUNE
  42.    If PASS=0 Then Get Disc Fonts 
  43.    WAITSET[600-Timer]
  44.    Screen Open 2,320,200,2,Lowres
  45.    Screen Hide 2
  46.    Flash Off : Curs Off : Hide On : Cls 0
  47.    Colour 1,$FFF
  48.    Set Font 4
  49.    PAUSE[250]
  50.    CREDITS
  51.    TITLE_PAGE
  52.    HARDSPRITE
  53.    HOTDOG
  54.    GIPPER
  55.    STAR
  56.    HARDSCROLL
  57.    DUAL_PLAYFIELD
  58.    OVERLAY
  59.    CHANGE_FONTS
  60.    PRICE
  61.    PASS=1
  62. Until False
  63. End 
  64. Procedure TUNE
  65.    Shared DISK$
  66.    Reserve As Chip Work 2,77806
  67.    Bload DISK$+"AMOS_MUSIC",2
  68.    Music 2
  69. End Proc
  70. Procedure SET_UP_TEXT_SCREENS[SCR]
  71.    Screen Open SCR,320,200,2,Lowres
  72.    Colour 1,$FFF
  73.    Flash Off : Curs Off : Hide On : Cls 0
  74.    Screen 2
  75. End Proc
  76. Procedure CLOSE_SCREENS
  77.    Screen Close 0 : Hide On 
  78. End Proc
  79. Procedure CREDITS
  80.    Shared CONTROL
  81.    SET_UP_TEXT_SCREENS[0]
  82.    Cls 0
  83.    MIDDLE["THE AMOS DEMO",25,1,1]
  84.    MIDDLE["PROGRAMMING BY",60,1,0]
  85.    MIDDLE["Peter Hickman",75,1,0]
  86.    MIDDLE["MUSIC BY",105,1,0]
  87.    MIDDLE["Allister Brimble",120,1,0]
  88.    Set Font 0
  89.    MIDDLE["IF YOU WOULD LIKE SOME CONTROL",155,1,0]
  90.    MIDDLE["OVER THIS DEMO PRESS SPACE NOW",165,1,0]
  91.    MIDDLE["There is an IMPORTANT text file",185,1,0]
  92.    MIDDLE["on this disk, please read it.",195,1,0]
  93.    Set Font 4
  94.    APPEAR_5[2,0]
  95.    Clear Key 
  96.    Timer=0
  97.    Repeat 
  98.       TEMP=Asc(Inkey$)
  99.    Until TEMP<>0 or Mouse Key<>0 or Timer=>600
  100.    If TEMP=32
  101.       Cls 0
  102.       MIDDLE["On some of the",40,1,0]
  103.       MIDDLE["demonstrations you",65,1,0]
  104.       MIDDLE["will be able to move",90,1,0]
  105.       MIDDLE["some of the SPRITES or",115,1,0]
  106.       MIDDLE["BOBS with the mouse.",140,1,0]
  107.       APPEAR_3[2,0]
  108.       WAITSET[300]
  109.       CONTROL=-1
  110.    Else CONTROL=0
  111.    End If 
  112. End Proc
  113. Procedure TITLE_PAGE
  114.    SET_UP_TEXT_SCREENS[0]
  115.    Cls 0
  116.    MIDDLE["Let your imagination",40,1,0]
  117.    MIDDLE["take control and",65,1,0]
  118.    MIDDLE["design the game",90,1,%0]
  119.    MIDDLE["of your dreams.",115,1,%0]
  120.    APPEAR_1[2,0]
  121.    WAITSET[300]
  122.    Cls 0
  123.    MIDDLE["Over 400 commands",40,1,0]
  124.    MIDDLE["to unleash the raw power",65,1,0]
  125.    MIDDLE["hidden inside your Amiga.",90,1,0]
  126.    APPEAR_2[2,0]
  127.    WAITSET[300]
  128. End Proc
  129. Procedure HARDSPRITE
  130.    Shared DISK$
  131.    SET_UP_TEXT_SCREENS[0]
  132.    Cls 0
  133.    MIDDLE["By pushing your Amiga to",40,1,0]
  134.    MIDDLE["its limit AMOS allows you",65,1,0]
  135.    MIDDLE["to exceed the maximum",90,1,0]
  136.    MIDDLE["amount of hardware",115,1,0]
  137.    MIDDLE["SPRITES normally",140,1,0]
  138.    MIDDLE["available to the user.",165,1,0]
  139.    APPEAR_4[2,0]
  140.    Timer=0
  141.    Load DISK$+"HARDSPRITE.ABK"
  142.    WAITSET[400-Timer]
  143.    CLOSE_SCREENS
  144.    Screen Open 3,320,200,16,Lowres
  145.    Screen Hide 3
  146.    Flash Off : Curs Off : Paper 0 : Hide On : Cls 0
  147.    Get Sprite Palette 
  148.    Set Sprite Buffer 210
  149.    SKATE$="B:FR0=9T23(10,R0)NR0JB"
  150.    BIKE$="B:FR0=1T8(6,R0)NR0JB"
  151.    GLIDE$="B:FR0=24T29(10,R0)NR0JB"
  152.    PLANE$="B:FR0=30T33(2,R0)NR0JB"
  153.    Screen Show 3 : Hide On : View 
  154.    Locate 0,13
  155.    Centre "SPRITE"
  156.    Cdown : Cdown 
  157.    Centre "NUMBER"
  158.    Restore IMAGE_DATA
  159.    For LOP=0 To 15
  160.       Read X,Y,IMAGE
  161.       Sprite LOP+20,X Hard(X),Y Hard(3,Y),IMAGE : Wait Vbl 
  162.       Channel LOP To Sprite 20+LOP
  163.       Print At(18,17);LOP+1
  164.       If IMAGE=1 Then Anim LOP,BIKE$
  165.       If IMAGE=9 Then Anim LOP,SKATE$
  166.       If IMAGE=24 Then Anim LOP,GLIDE$
  167.       If IMAGE=30 Then Anim LOP,PLANE$
  168.       PAUSE[80]
  169.    Next LOP
  170.    PAUSE[200]
  171.    Print At(17,15);Space$(6);
  172.    Print At(18,17);Space$(3);
  173.    Locate 0,13
  174.    Centre "ANIMATE!"
  175.    Anim On 
  176.    PAUSE[600]
  177.    Locate 0,13
  178.    Centre "MOVE IT!"
  179.    For LOP=0 To 12 Step 4
  180.       Move LOP,"M-260,0,200"
  181.       Move LOP+1,"M260,0,200"
  182.       Move LOP+2,"M-220,0,140"
  183.       Move LOP+3,"M220,0,140"
  184.    Next LOP
  185.    Move On 
  186.    X Mouse=450
  187.    PAUSE[250]
  188.    Anim Off 
  189.    Move Off 
  190.    Sprite Off 
  191.    Set Sprite Buffer 16
  192.    Screen Close 3
  193.    IMAGE_DATA:
  194.    Data 230,-1,24,60,0,1,180,30,30,100,25,9
  195.    Data 230,49,24,60,50,1,180,80,30,100,75,9
  196.    Data 230,99,24,60,100,1,180,130,30,100,125,9
  197.    Data 230,150,24,60,149,1,180,180,30,100,175,9
  198. End Proc
  199. Procedure HOTDOG
  200.    Shared NO_FAST_MEM,DISK$,CONTROL
  201.    SET_UP_TEXT_SCREENS[0]
  202.    Cls 0
  203.    MIDDLE["Software SPRITES (BOBS)",30,1,0]
  204.    MIDDLE["are also available. Their",55,1,0]
  205.    MIDDLE["size and range of colours",80,1,0]
  206.    MIDDLE["are limited only by the",105,1,0]
  207.    MIDDLE["amount of free memory!",130,1,0]
  208.    If CONTROL=-1
  209.       MIDDLE["Use the mouse to control",155,1,0]
  210.       MIDDLE["the giant hotdog.",180,1,0]
  211.    End If 
  212.    APPEAR_3[2,0]
  213.    Timer=0
  214.    Load DISK$+"HOTDOGSPRITES.ABK"
  215.    WAITSET[400-Timer]
  216.    If NO_FAST_MEM=0
  217.       Load Iff DISK$+"BACKGR.IFF",7
  218.       Screen Hide 7
  219.    Else 
  220.       Screen Open 7,320,200,16,Lowres
  221.       Flash Off : Curs Off : Cls 0 : Hide On 
  222.       Get Sprite Palette 
  223.    End If 
  224.    CLOSE_SCREENS
  225.    Double Buffer 
  226.    If CONTROL=-1
  227.       X Mouse=50 : Y Mouse=50
  228.       HOTDOG$="Begin: Let X=XS(7,XM) Let Y=YS(7,YM) Jump Begin"
  229.    Else 
  230.       HOTDOG$="B: Let X=50 M -300,0,100 L: Let X=360 M -600,0,200 J L"
  231.    End If 
  232.    FASTLEFT$="  Begin: Let X=360  Move -480,0,120  Jump Begin"
  233.    SLOWLEFT$="  Begin: Let X=360  Move -480,0,240  Jump Begin"
  234.    MINILEFT$="  Begin: Let X=360  Move -480,0,480  Jump Begin"
  235.    FASTRIGHT$=" Begin: Let X=-120 Move 440,0,110   Jump Begin"
  236.    SLOWRIGHT$=" Begin: Let X=-120 Move 440,0,220   Jump Begin"
  237.    MINI$="      Begin: Let X=-120 Move 440,0,440   Jump Begin"
  238.    BANNERLEFT$="Begin: Let X=360  Move -680,0,1360 Jump Begin"
  239.    BANNERIGHT$="Begin: Let X=-360 Move 680,0,1360  Jump Begin"
  240.    Restore HOTDOG_POSITIONS
  241.    For LOP=0 To 8
  242.       Read X,Y,IMAGE
  243.       Channel LOP To Bob LOP
  244.       If NO_FAST_MEM
  245.          Bob LOP,X,Y,IMAGE,0
  246.       Else 
  247.          Bob LOP,X,Y,IMAGE
  248.       End If 
  249.    Next LOP
  250.    Move 0,MINIRIGHT$
  251.    Move 1,FASTLEFT$
  252.    Move 2,SLOWLEFT$
  253.    Move 3,MINILEFT$
  254.    Move 4,FASTRIGHT$
  255.    Move 5,SLOWRIGHT$
  256.    Move 6,BANNERLEFT$
  257.    Move 7,BANNERIGHT$
  258.    Move 8,HOTDOG$
  259.    Move On 
  260.    Screen Show 7
  261.    WAITSET[2000]
  262.    Bob Off 
  263.    Move Off 
  264.    Anim Off 
  265.    Screen Close 7
  266.    HOTDOG_POSITIONS:
  267.    Data -120,60,3
  268.    Data 360,80,2,360,20,2
  269.    Data 360,100,5,-120,140,3
  270.    Data -120,0,4,320,0,6
  271.    Data -320,172,7,50,50,1
  272. End Proc
  273. Procedure OPEN_GIPPER
  274.    Screen Open 3,320,200,16,Lowres
  275.    Flash Off : Curs Off 
  276.    Hide On : Cls 0
  277.    Get Sprite Palette 
  278. End Proc
  279. Procedure GIPPER
  280.    Shared DISK$
  281.    SET_UP_TEXT_SCREENS[0]
  282.    Cls 0
  283.    MIDDLE["Software SPRITES (BOBS)",40,1,0]
  284.    MIDDLE["can be used in many",65,1,0]
  285.    MIDDLE["different ways.",90,1,0]
  286.    APPEAR_1[2,0]
  287.    Timer=0
  288.    Load DISK$+"GIPPER.ABK"
  289.    WAITSET[200-Timer]
  290.    OPEN_GIPPER
  291.    CLOSE_SCREENS
  292.    Double Buffer 
  293.    Bob Update Off 
  294.    XSTART=-55
  295.    For LOP=1 To 4
  296.       For IMAGE=14 To 19
  297.          PUT_GIPPER[IMAGE,XSTART]
  298.          Add XSTART,6
  299.          PAUSE[10]
  300.       Next IMAGE
  301.    Next LOP
  302.    For LOP=1 To 8
  303.       Add XSTART,4
  304.       PUT_GIPPER[21,XSTART]
  305.       PAUSE[10]
  306.    Next LOP
  307.    For LOP=1 To 5
  308.       For IMAGE=24 To 31
  309.          PUT_GIPPER[IMAGE,XSTART]
  310.          PAUSE[10]
  311.       Next IMAGE
  312.    Next LOP
  313.    For LOP=1 To 7
  314.       For IMAGE=14 To 19
  315.          PUT_GIPPER[IMAGE,XSTART]
  316.          Add XSTART,6
  317.          PAUSE[10]
  318.       Next IMAGE
  319.    Next LOP
  320.    Screen Close 3
  321.    SET_UP_TEXT_SCREENS[0]
  322.    Cls 0
  323.    MIDDLE["There is no limit to the",40,1,0]
  324.    MIDDLE["amount of images you can",65,1,0]
  325.    MIDDLE["generate. By using just",90,1,0]
  326.    MIDDLE["one BOB dozens can be",115,1,0]
  327.    MIDDLE["displayed with ease.",140,1,0]
  328.    APPEAR_3[2,0]
  329.    WAITSET[400]
  330.    OPEN_GIPPER
  331.    Screen To Front 3
  332.    Screen 3
  333.    CLOSE_SCREENS
  334.    Double Buffer 
  335.    XSTART=-315
  336.    For LOP=1 To 8
  337.       For IMAGE=14 To 19
  338.          GIPPERS[IMAGE,XSTART]
  339.          Add XSTART,6
  340.       Next IMAGE
  341.    Next LOP
  342.    GIPPERS[20,XSTART]
  343.    For LOP=1 To 8
  344.       Add XSTART,4
  345.       GIPPERS[21,XSTART]
  346.    Next LOP
  347.    For LOP=1 To 5
  348.       For IMAGE=24 To 31
  349.          GIPPERS[IMAGE,XSTART]
  350.       Next IMAGE
  351.    Next LOP
  352.    For LOP=1 To 9
  353.       For IMAGE=14 To 19
  354.          GIPPERS[IMAGE,XSTART]
  355.          Add XSTART,6
  356.       Next IMAGE
  357.    Next LOP
  358.    Bob Off 
  359.    Bob Update On 
  360.    Screen Close 3
  361. End Proc
  362. Procedure PUT_GIPPER[IMAGE,XSTART]
  363.    Bob 1,XSTART,75,IMAGE,0
  364.    Bob Draw 
  365.    Screen Swap : Wait Vbl 
  366.    Cls 0
  367. End Proc
  368. Procedure GIPPERS[IMAGE,XSTART]
  369.    For Y=1 To 200 Step 50
  370.       For X=0 To 11 Step 2
  371.          Bob 1,XSTART+(X*25),Y,IMAGE,0
  372.          Bob Draw 
  373.       Next X
  374.    Next Y
  375.    Screen Swap : Wait Vbl 
  376.    Cls 0
  377. End Proc
  378. Procedure STAR
  379.    Shared NO_FAST_MEM,DISK$,CONTROL
  380.    Dim PREV_ANI(15),PATH$(15)
  381.    SET_UP_TEXT_SCREENS[0]
  382.    Cls 0
  383.    MIDDLE["Collision detection in AMOS",30,1,0]
  384.    MIDDLE["uses special masks.",55,1,0]
  385.    MIDDLE["This method is very",80,1,0]
  386.    MIDDLE["fast and gives 100%",105,1,0]
  387.    MIDDLE["accuracy.",130,1,0]
  388.    APPEAR_2[2,0]
  389.    WAITSET[300]
  390.    Cls 0
  391.    MIDDLE["Watch the balls in this",30,1,0]
  392.    MIDDLE["next demo. They only",55,1,0]
  393.    MIDDLE["change colour when in",80,1,0]
  394.    MIDDLE["contact with a solid",105,1,0]
  395.    MIDDLE["part of the large star.",130,1,0]
  396.    If CONTROL=-1
  397.       MIDDLE["Use the mouse to",155,1,0]
  398.       MIDDLE["control this star.",180,1,0]
  399.    End If 
  400.    APPEAR_4[2,0]
  401.    If NO_FAST_MEM=True Then Erase 1
  402.    Timer=0
  403.    Load Iff DISK$+"STAR.IFF",7
  404.    Screen Hide 7
  405.    WAITSET[400-Timer]
  406.    CLOSE_SCREENS
  407.    Get Bob 1,66,0 To 319,179
  408.    NUM=2
  409.    For LOP1=0 To 9
  410.       For LOP2=0 To 2
  411.          Get Bob NUM,LOP2*15,LOP1*15 To(LOP2*15)+15,(LOP1*15)+15
  412.          Inc NUM
  413.       Next LOP2
  414.    Next LOP1
  415.    Get Bob 1,69,0 To 319,179
  416.    Curs Off 
  417.    Hide On 
  418.    Make Mask 
  419.    Cls 0
  420.    Double Buffer 
  421.    Bob 1,0,12,1,0
  422.    If CONTROL=-1
  423.       X Mouse=0 : Y Mouse=0
  424.       STAR$="Begin:  Let X=XS(7,XM) Let Y=YS(7,YM) Jump Begin"
  425.    Else 
  426.       STAR$="B: L X=0 L Y=0 M 50,10,50 "
  427.       STAR$=STAR$+"M -50,0,25 L: M25,-10,25 M 25,10,25 "
  428.       STAR$=STAR$+"M-25,10,25 M-25,-10,25 J L"
  429.    End If 
  430.    BLUE$="Loop: (0,2)(0,3)(0,4)(0,5)(0,6)(0,7)(0,8)(0,9)"
  431.    BLUE$=BLUE$+"(0,10)(0,11)(0,12)(0,13)(0,14)(0,15) Jump Loop"
  432.    RED$="Loop: (0,16)(0,17)(0,18)(0,19),(0,20)(0,21)(0,22)(0,23)"
  433.    RED$=RED$+"(0,24)(0,25)(0,26)(0,27)(0,28)(0,29) Jump Loop"
  434.    PATH$(0)="Begin: Let X=-10 Let Y=102 M 340,0,170"
  435.    PATH$(0)=PATH$(0)+" Let X=330 Let Y=20 M -360,100,140 Jump Begin"
  436.    PATH$(1)="Begin: Let X=330 Let Y=88 M -360,0,120"
  437.    PATH$(1)=PATH$(1)+" Let X=-20 Let Y=220 M 360,-240,180 Jump Begin"
  438.    PATH$(2)="Begin: Let X=330 Let Y=-20 M -360,240,100"
  439.    PATH$(2)=PATH$(2)+" Let X=-10 Let Y=-20 M 340,240,170 Jump Begin"
  440.    PATH$(3)="Begin: Let X=-20 Let Y=20 M 340,240,120"
  441.    PATH$(3)=PATH$(3)+" Let X=330 Let Y=90 M -360,0,180 Jump Begin"
  442.    PATH$(4)="Begin: Let X=280 Let Y=-20 M -200,240,120"
  443.    PATH$(4)=PATH$(4)+" Let X=-20 Let Y=180 M 340,-80,340 Jump Begin"
  444.    OBJECTS=5
  445.    For LOP=0 To OBJECTS-1
  446.       Bob LOP+2,INITX,INITY,2,0
  447.       Channel LOP To Bob LOP+2
  448.    Next LOP
  449.    Screen Show 7
  450.    Channel 15 To Bob 1
  451.    Move 15,STAR$
  452.    Bob 1,0,0,1
  453.    For LOP=0 To OBJECTS-1
  454.       Move LOP,PATH$(LOP)
  455.       Anim LOP,BLUE$
  456.    Next LOP
  457.    Move On 
  458.    Anim On 
  459.    For LOP=2 To OBJECTS+2
  460.       PREV_ANI(LOP)=True
  461.    Next LOP
  462.    Clear Key 
  463.    Timer=0
  464.    Repeat 
  465.       For LOP=2 To OBJECTS+2
  466.          HIT=Bob Col(LOP)
  467.          HIT=Col(1)
  468.          If HIT and PREV_ANI(LOP)
  469.             Anim Off LOP-2
  470.             Anim LOP-2,RED$
  471.             Anim On LOP-2
  472.             PREV_ANI(LOP)=False
  473.          Else If HIT=0 and PREV_ANI(LOP)=0
  474.                Anim Off LOP-2
  475.                Anim LOP-2,BLUE$
  476.                Anim On LOP-2
  477.                PREV_ANI(LOP)=True
  478.             End If 
  479.          End If 
  480.       Next LOP
  481.       TEMP=Asc(Inkey$)
  482.    Until Timer=>2000 or Mouse Key<>0 or TEMP<>0
  483.    Bob Off 
  484.    Move Off 
  485.    Anim Off 
  486.    Screen Close 7
  487.    Rem Screen Open 2,320,200,2,Lowres 
  488.    Rem  Flash Off : Curs Off : Hide On  
  489. End Proc
  490. Procedure HARDSCROLL
  491.    Shared NO_FAST_MEM,DISK$
  492.    SET_UP_TEXT_SCREENS[0]
  493.    Cls 0
  494.    MIDDLE["Software and hardware",40,1,0]
  495.    MIDDLE["scrolling are present in",65,1,0]
  496.    MIDDLE["AMOS. Each type can be",90,1,0]
  497.    MIDDLE["activated with a single",115,1,0]
  498.    MIDDLE["command.",140,1,0]
  499.    APPEAR_5[2,0]
  500.    WAITSET[400]
  501.    Cls 0
  502.    MIDDLE["It is possible to use",40,1,0]
  503.    MIDDLE["both SPRITES and BOBS",65,1,0]
  504.    MIDDLE["on any type of",90,1,0]
  505.    MIDDLE["scrolling screen.",115,1,0]
  506.    APPEAR_3[2,0]
  507.    Timer=0
  508.    If NO_FAST_MEM=-1 Then Erase 1
  509.    LANDSCAPE$="B: L X=0 L R0=RA I R0=0 J B "
  510.    LANDSCAPE$=LANDSCAPE$+"L: L X=X+R0 P If X=320 J B"
  511.    LANDSCAPE$=LANDSCAPE$+"J L"
  512.    SHIP$="B: L RB=0 P P P M 100,0,25 L RB=1 P P P M 80,-80,20 L RB=2 "
  513.    SHIP$=SHIP$+" P P P M 0,160,40 L RB=1 P P P M -80,-80,20 L RA=10 L RB=0 P P P "
  514.    SHIP$=SHIP$+" M 100,0,25 M -140,0,140 L RB=0"
  515.    SANI$="B: I RB=0 J S I RB=1 J U I RB=2 J D J B"
  516.    SANI$=SANI$+"S: (10,1)(10,2) J B"
  517.    SANI$=SANI$+"U: (10,3)(10,4) J B"
  518.    SANI$=SANI$+"D: (10,5)(10,6) J B"
  519.    ALIENANI$="B: (5,22)(5,23)(5,26)(5,27)(5,28)(5,29)(5,30) "
  520.    ALIENANI$=ALIENANI$+" (5,31)(5,32) J B"
  521.    ALIENANI2$="B: (10,32)(10,31)(10,30)(10,29)(10,28)(10,27)"
  522.    ALIENANI2$=ALIENANI2$+"(10,26)(10,23)(10,22) J B"
  523.    ALIENMOVE$="F R0=1 T 2 L X=440 M -400,0,50 N R0"
  524.    ALIENMOVE2$="F R0=1 T 2 L X=440 M -400,0,100 N R0"
  525.    EXPLODE$="FR0=13T21(7,R0)NR0(7,33)"
  526.    If NO_FAST_MEM Then Erase 1
  527.    Screen Open 6,640,200,16,Lowres
  528.    Screen Hide 6
  529.    Flash Off : Curs Off : Hide On 
  530.    Cls 0
  531.    Screen Display 6,,50,,199
  532.    Channel 0 To Screen Offset 6
  533.    Channel 8 To Sprite 30
  534.    Load DISK$+"SCROLLSPRITES.ABK"
  535.    Load Iff DISK$+"LANDSCAPE.IFF"
  536.    Cls 0,0,0 To 319,137
  537.    Screen Copy 6,0,0,319,200 To 6,320,0
  538.    WAITSET[300-Timer]
  539.    CLOSE_SCREENS
  540.    Get Sprite Palette 
  541.    Screen Show 6
  542.    Set Sprite Buffer 128
  543.    Hide On 
  544.    Amreg(0)=0
  545.    Move 0,LANDSCAPE$
  546.    For LOP=1 To 6
  547.       Channel LOP To Sprite LOP+19
  548.    Next LOP
  549.    Sprite 20,90,120,1
  550.    Move 1,SHIP$
  551.    Anim 1,SANI$
  552.    Restore SLOW_SHIPS
  553.    For LOP=5 To 6
  554.       Read Y
  555.       Sprite 19+LOP,440,Y,22
  556.       Anim LOP,ALIENANI2$
  557.       Move LOP,ALIENMOVE2$
  558.       Anim On LOP
  559.       Move On LOP
  560.       PAUSE[20]
  561.    Next LOP
  562.    Restore FAST_SHIPS
  563.    For LOP=2 To 4
  564.       Read Y
  565.       Sprite 19+LOP,440,Y,22
  566.       Anim LOP,ALIENANI$
  567.       Move LOP,ALIENMOVE$
  568.       Anim On LOP
  569.       Move On LOP
  570.       PAUSE[30]
  571.    Next LOP
  572.    Anim On 1
  573.    Move On 1
  574.    PAUSE[600]
  575.    Move On 0
  576.    PAUSE[600]
  577.    Amreg(0)=20
  578.    PAUSE[600]
  579.    Amreg(0)=10
  580.    PAUSE[400]
  581.    Amreg(0)=5
  582.    PAUSE[300]
  583.    Amreg(0)=0
  584.    PAUSE[230]
  585.    Move On 0
  586.    PAUSE[40]
  587.    Move 1,"M 120,0,20"
  588.    Sprite 23,440,120,22
  589.    Move 4,"M -160,0,20"
  590.    Move On 1
  591.    Move On 4
  592.    PAUSE[70]
  593.    Sprite Off 23
  594.    Anim Off 23
  595.    Sprite 23,260,120,13
  596.    Anim 1,EXPLODE$
  597.    Anim On 1
  598.    WAITSET[10]
  599.    Anim 4,EXPLODE$
  600.    Anim On 4
  601.    PAUSE[400]
  602.    Sprite Off 
  603.    Screen Close 6
  604.    X Mouse=450
  605.    Set Sprite Buffer 16
  606.    SLOW_SHIPS:
  607.    Data 50,135
  608.    FAST_SHIPS:
  609.    Data 200,170,90
  610. End Proc
  611. Procedure OVERLAY
  612.    Shared DISK$,NO_FAST_MEM
  613.    SET_UP_TEXT_SCREENS[0]
  614.    Cls 
  615.    MIDDLE["AMOS allows up to",40,1,0]
  616.    MIDDLE["eight screens to be",65,1,0]
  617.    MIDDLE["displayed at any",90,1,0]
  618.    MIDDLE["one time.",115,1,0]
  619.    APPEAR_1[2,0]
  620.    WAITSET[300]
  621.    Cls 0
  622.    MIDDLE["Each screen can",40,1,0]
  623.    MIDDLE["be manipulated in a",65,1,0]
  624.    MIDDLE["variety of unusual ways.",90,1,0]
  625.    APPEAR_4[2,0]
  626.    Timer=0
  627.    Screen Close 2
  628.    If NO_FAST_MEM=-1 Then Erase 1
  629.    HAMWINDOW$="Begin: Let Y=-300 M 0,650,65 Jump Begin"
  630.    BACKWINDOW$="Begin: M 320,0,80 M -320,0,80 Jump Begin"
  631.    Load Iff DISK$+"AMOSPIC1.d3",5
  632.    Screen Hide 5
  633.    Load Iff DISK$+"KEYKEEPER",6
  634.    Screen Hide 6
  635.    WAITSET[300-Timer]
  636.    CLOSE_SCREENS
  637.    Screen Show 5
  638.    Screen Show 6
  639.    Screen Open 7,640,8,2,Hires
  640.    Screen Display 5,,45,,255
  641.    Flash Off : Curs Off : Hide On 
  642.    Paper 0 : Colour 1,$FFF
  643.    Cls 0
  644.    Centre "OVERLAPPING SCREENS WITH DIFFERENT SIZES, RESOLUTIONS AND COLOURS IS EASY"
  645.    Channel 0 To Screen Display 7
  646.    Channel 1 To Screen Display 6
  647.    Channel 2 To Screen Offset 5
  648.    Move 1,HAMWINDOW$
  649.    Move 2,BACKWINDOW$
  650.    Move On 
  651.    Timer=0
  652.    Clear Key 
  653.    Repeat 
  654.       Screen To Front 7
  655.       For LOP=45 To 293
  656.          Screen Display 7,,LOP,,8
  657.          Wait Vbl 
  658.       Next LOP
  659.       Screen To Front 6
  660.       For LOP=293 To 45 Step -1
  661.          Screen Display 7,,LOP,,8
  662.          Wait Vbl 
  663.       Next LOP
  664.       TEMP=Asc(Inkey$)
  665.    Until(Timer=>2000) or(Mouse Key<>0) or(TEMP<>0)
  666.    Screen Close 7
  667.    Screen Close 6
  668.    Screen Close 5
  669.    Move Off 
  670.    SET_UP_TEXT_SCREENS[2]
  671. End Proc
  672. Procedure CHANGE_FONTS
  673.    SET_UP_TEXT_SCREENS[0]
  674.    Cls 0
  675.    Set Font 4
  676.    MIDDLE["AMOS is much more flexible",40,1,0]
  677.    MIDDLE["then any other Amiga",65,1,0]
  678.    MIDDLE["programming language.",90,1,0]
  679.    APPEAR_4[2,0]
  680.    WAITSET[200]
  681.    Cls 0
  682.    MIDDLE["You can even use",40,1,0]
  683.    MIDDLE["standard Duluxe Paint",65,1,0]
  684.    MIDDLE["compatible fonts.",90,1,0]
  685.    APPEAR_5[2,0]
  686.    WAITSET[200]
  687.    For LOP=1 To 9
  688.       Cls 0
  689.       Timer=0
  690.       Set Font LOP
  691.       If LOP<>7
  692.          For LOP2=Text Base To 200-Text Base Step Text Base+4
  693.             MIDDLE["AMOS FONTS",LOP2,1,0]
  694.          Next LOP2
  695.          Screen Copy 2 To 0
  696.          WAITSET[130-Timer]
  697.       End If 
  698.    Next LOP
  699.    WAITSET[150]
  700.    Set Font 4
  701. End Proc
  702. Procedure DUAL_PLAYFIELD
  703.    Shared DISK$,NO_FAST_MEM
  704.    SET_UP_TEXT_SCREENS[0]
  705.    Cls 0
  706.    MIDDLE["With AMOS you can easily",30,1,0]
  707.    MIDDLE["utilise the unique Amiga",55,1,0]
  708.    MIDDLE["Dual Playfield mode, Which",80,1,0]
  709.    MIDDLE["allows two screens to be",105,1,0]
  710.    MIDDLE["overlayed on top of each",130,1,0]
  711.    MIDDLE["each other.",155,1,0]
  712.    APPEAR_3[2,0]
  713.    WAITSET[300]
  714.    Cls 0
  715.    MIDDLE["This allows you to create",30,1,0]
  716.    MIDDLE["stunning parallax scrolling",55,1,0]
  717.    MIDDLE["games like XENON II and",80,1,0]
  718.    MIDDLE["SILKWORM.",105,1,0]
  719.    APPEAR_2[2,0]
  720.    WAITSET[300]
  721.    If NO_FAST_MEM=-1 Then Erase 1
  722.    Auto View Off 
  723.    FRONT$="B:LX=1L:LX=X+4PIX>320JBJL"
  724.    BACK$=" B:LX=1L:LX=X+2PIX>320JBJL"
  725.    OPEN_LONG[6]
  726.    Load Iff DISK$+"DPLAY1.IFF"
  727.    Screen Copy 6,0,0,320,200 To 6,320,0
  728.    OPEN_LONG[7]
  729.    Load Iff DISK$+"DPLAY2.IFF"
  730.    Screen Copy 7,0,0,320,200 To 7,320,0
  731.    Auto View On 
  732.    Wait Vbl 
  733.    Dual Playfield 6,7
  734.    Restore DUAL_DATA
  735.    Screen 6
  736.    For LOP=8 To 15
  737.       Read REG
  738.       Colour LOP,REG
  739.    Next LOP
  740.    Channel 6 To Screen Offset 6
  741.    Channel 7 To Screen Offset 7
  742.    Move 6,BACK$
  743.    Move 7,FRONT$
  744.    Move On 
  745.    WAITSET[2000]
  746.    Move Off 
  747.    Screen 0 : Cls 0
  748.    Screen Close 6
  749.    Screen Close 7
  750.    DUAL_DATA:
  751.    Data $0,$333,$666,$AAA,$EEE,$233,$964,$B86
  752. End Proc
  753. Procedure OPEN_LONG[SCR]
  754.    Screen Open SCR,640,200,8,Lowres
  755.    Flash Off : Curs Off : Hide On : Cls 0
  756. End Proc
  757. Procedure PRICE
  758.    Shared DISK$
  759.    Load DISK$+"LOGO.ABK"
  760.    Screen Open 0,320,200,16,Lowres
  761.    Flash Off : Curs Off : Hide On 
  762.    Cls 0
  763.    Screen 2
  764.    Cls 0
  765.    Set Font 4
  766.    MIDDLE["AMOS will be available in",25,1,0]
  767.    MIDDLE["March for "+Chr$(163)+"49.95 from ",38,1,0]
  768.    Set Font 0
  769.    MIDDLE["FOR DETAILED SPECIFICATIONS",85,1,0]
  770.    MIDDLE["WRITE TO:",95,1,0]
  771.    MIDDLE["AMOS INFORMATION",105,1,0]
  772.    MIDDLE["MANDARIN SOFTWARE",115,1,0]
  773.    MIDDLE["EUROPA HOUSE, ADLINGTON PARK",125,1,0]
  774.    MIDDLE["ADLINGTON, MACCLESFIELD",135,1,0]
  775.    MIDDLE["SK10 4NP",145,1,0]
  776.    MIDDLE["PHONE: (0625) 859333",160,1,0]
  777.    MIDDLE["Press space for more information",175,1,0]
  778.    MIDDLE["Any other key",185,1,1]
  779.    MIDDLE["restarts this demo.",195,1,1]
  780.    APPEAR_1[2,0]
  781.    Screen 0
  782.    Get Sprite Palette 
  783.    Colour 1,$FFF
  784.    Patch Bob 114,39,1
  785.    Screen 2
  786.    Timer=0
  787.    Repeat 
  788.       TEMP=Asc(Inkey$)
  789.    Until Mouse Key<>0 or Timer=>1500 or TEMP<>0
  790.    Bob Off 
  791.    If TEMP=32
  792.       ABOUT_EDITOR
  793.       ABOUT_MUSIC
  794.       ABOUT_SCREENS
  795.       ABOUT_SPRITES
  796.       ABOUT_AMAL
  797.       ABOUT_ADVANCED
  798.       ABOUT_MORE
  799.       ABOUT_USES
  800.    End If 
  801. End Proc
  802. Procedure ABOUT_EDITOR
  803.    INFO_SET["ABOUT AMOS"]
  804.    Text 0,45,"-Edit programs in an advanced"
  805.    Text 0,55," user friendly environment."
  806.    Text 0,75,"-Have up to four programs and"
  807.    Text 0,85," twelve accessories in memory."
  808.    Text 0,105,"-Use the configurable function"
  809.    Text 0,115," key menu to access dozens of"
  810.    Text 0,125," often used commands."
  811.    Text 0,145,"-Port STOS programs from an ST"
  812.    Text 0,155," with relative ease."
  813.    Screen 0
  814.    Cls 0
  815.    Screen 2
  816.    APPEAR_1[2,0]
  817.    WAITSET[650]
  818. End Proc
  819. Procedure ABOUT_MUSIC
  820.    INFO_SET["SOUND"]
  821.    Text 0,45,"-Play up to four samples at once"
  822.    Text 0,55," while your program is running!!"
  823.    Text 0,75,"-Play interrupt driven music"
  824.    Text 0,85," created with SoundTracker, GMC"
  825.    Text 0,95," or use the advanced music"
  826.    Text 0,105," editor that comes with AMOS."
  827.    Text 0,125,"-Access the sound chip directly"
  828.    Text 0,135," with powerful commands."
  829.    APPEAR_3[2,0]
  830.    WAITSET[600]
  831. End Proc
  832. Procedure ABOUT_SCREENS
  833.    INFO_SET["SCREENS"]
  834.    Text 0,45,"-Load any type of IFF picture,"
  835.    Text 0,55," ie HAM, EHB and Dual Playfield."
  836.    Text 0,75,"-Have up to eight screens"
  837.    Text 0,85," displayed at any one time."
  838.    Text 0,105,"-Clone any screen to produce"
  839.    Text 0,115," spectacular multi-player games."
  840.    Text 0,135,"-Scroll a screen with a single"
  841.    Text 0,145," command."
  842.    APPEAR_4[2,0]
  843.    WAITSET[600]
  844. End Proc
  845. Procedure ABOUT_SPRITES
  846.    INFO_SET["SPRITES"]
  847.    Text 0,45,"-Professional sprite editor"
  848.    Text 0,55," allows the creation of gigantic"
  849.    Text 0,65," images."
  850.    Text 0,85,"-Display up to 400 hardware"
  851.    Text 0,95," sprites on one screen."
  852.    Text 0,115,"-Exceed the 4 colour hardware"
  853.    Text 0,125," sprite limitation."
  854.    Text 0,145,"-Grab and examine sprites from"
  855.    Text 0,155," your favourite games using the"
  856.    Text 0,165," special sprite grabber program."
  857.    APPEAR_2[2,0]
  858.    WAITSET[650]
  859. End Proc
  860. Procedure ABOUT_AMAL
  861.    INFO_SET["AMAL"]
  862.    Text 0,45,"-Animate and move sprites,"
  863.    Text 0,55," Bobs and even whole screens"
  864.    Text 0,65," with the interrupt driven"
  865.    Text 0,75," AMos Animation Language (AMAL)."
  866.    Text 0,95,"-Display up to 64 animation"
  867.    Text 0,105," sequences."
  868.    Text 0,125,"-An easy-to-use AMAL editor"
  869.    Text 0,135," gives AMOS features absent"
  870.    Text 0,145," from many dedicated animation"
  871.    Text 0,155," packages."
  872.    APPEAR_5[2,0]
  873.    WAITSET[700]
  874. End Proc
  875. Procedure ABOUT_ADVANCED
  876.    INFO_SET["ADVANCED FEATURES"]
  877.    Text 0,45,"-Directly modify the copper list,"
  878.    Text 0,55," giving complete control over"
  879.    Text 0,65," the building blocks which make"
  880.    Text 0,75," up all Amiga screens."
  881.    Text 0,95,"-Access all the Standard disk"
  882.    Text 0,105," functions without having to"
  883.    Text 0,115," open external libraries, AMOS"
  884.    Text 0,125," has them built in!"
  885.    Text 0,145,"-Use any standard Amiga font to"
  886.    Text 0,155," produce high quality displays."
  887.    Text 0,175,"-Add your own commands to AMOS"
  888.    Text 0,185," with a unique extension system."
  889.    APPEAR_1[2,0]
  890.    WAITSET[700]
  891. End Proc
  892. Procedure ABOUT_MORE
  893.    INFO_SET["MORE ADVANCED FEATURES"]
  894.    Text 0,45,"-Use procedures with parameter"
  895.    Text 0,55," passing and error detection."
  896.    Text 0,75,"-Create highly structured"
  897.    Text 0,85," programs with the IF-ENDIF"
  898.    Text 0,95," constructs."
  899.    Text 0,115,"-Commands unique to AMOS give"
  900.    Text 0,125," the system unparalled speed"
  901.    Text 0,135," in numerical processing."
  902.    APPEAR_3[2,0]
  903.    WAITSET[600]
  904. End Proc
  905. Procedure ABOUT_USES
  906.    INFO_SET["USES FOR AMOS"]
  907.    Text 0,45,"-As an advanced development tool"
  908.    Text 0,55," for games."
  909.    Text 0,75,"-As a tool to develop"
  910.    Text 0,85," educational or utility"
  911.    Text 0,95," software."
  912.    Text 0,115,"-As a system to produce"
  913.    Text 0,125," animation within an academic"
  914.    Text 0,135," or commercial environment."
  915.    Text 0,155,"-As part of a video titling"
  916.    Text 0,165," system."
  917.    Text 0,185,"-As a teaching aid for advanced"
  918.    Text 0,195," level students."
  919.    APPEAR_5[2,0]
  920.    WAITSET[700]
  921. End Proc
  922. Procedure INFO_SET[T$]
  923.    Cls 0
  924.    Set Font 4
  925.    MIDDLE[T$,20,1,1]
  926.    Set Font 0
  927. End Proc
  928. Procedure PAUSE[T]
  929.    For LOP=1 To T*100
  930.    Next LOP
  931. End Proc
  932. Procedure WAITSET[T]
  933.    Timer=0
  934.    Clear Key 
  935.    Repeat 
  936.       TEMP1=Asc(Inkey$)
  937.    Until Mouse Key<>0 or TEMP1<>0 or Timer=>T
  938. End Proc
  939. Procedure MIDDLE[T$,Y,C,FLAG]
  940.    Screen 2
  941.    Gr Writing 0
  942.    Ink C
  943.    Set Text FLAG
  944.    TEMP=Text Length(T$)
  945.    MIDDLE=(320-TEMP)/2
  946.    Text MIDDLE,Y,T$
  947. End Proc
  948. Procedure APPEAR_1[SOURCE,DEST]
  949.    Screen To Front DEST
  950.    Screen DEST
  951.    Get Palette SOURCE
  952.    For LOP=0 To 99 Step 2
  953.       Y=LOP*2
  954.       Y2=197-(Y-1)
  955.       Screen Copy SOURCE,0,Y,320,Y+2 To DEST,0,Y
  956.       Screen Copy SOURCE,0,Y2,320,Y2+2 To DEST,0,Y2
  957.       PAUSE[10]
  958.    Next LOP
  959.    Screen SOURCE
  960. End Proc
  961. Procedure APPEAR_2[SOURCE,DEST]
  962.    Screen To Front DEST
  963.    Screen DEST
  964.    Get Palette SOURCE
  965.    For LOP=0 To 159 Step 2
  966.       X=LOP*2
  967.       X2=317-(X-1)
  968.       Screen Copy SOURCE,X,0,X+2,200 To DEST,X,0
  969.       Screen Copy SOURCE,X2,0,X2+2,200 To DEST,X2,0
  970.       PAUSE[5]
  971.    Next LOP
  972.    Screen SOURCE
  973. End Proc
  974. Procedure APPEAR_3[SOURCE,DEST]
  975.    Screen To Front DEST
  976.    Screen DEST
  977.    Get Palette SOURCE
  978.    For LOP=0 To 319 Step 2
  979.       X=LOP
  980.       X2=318-(X-1)
  981.       Screen Copy SOURCE,X,0,X+1,200 To DEST,X,0
  982.       Screen Copy SOURCE,X2,0,X2+1,200 To DEST,X2,0
  983.    Next LOP
  984.    Screen SOURCE
  985. End Proc
  986. Procedure APPEAR_4[SOURCE,DEST]
  987.    Screen To Front DEST
  988.    Screen DEST
  989.    Get Palette SOURCE
  990.    For X=0 To 39
  991.       For Y=0 To X
  992.          Screen Copy SOURCE,(X-Y)*16,Y*10,(X-Y+1)*16,(Y+1)*10 To DEST,(X-Y)*16,Y*10
  993.       Next Y
  994.    Next X
  995.    Screen SOURCE
  996. End Proc
  997. Procedure APPEAR_5[SOURCE,DEST]
  998.    Screen To Front DEST
  999.    Screen DEST
  1000.    Get Palette SOURCE
  1001.    XAXIS=20
  1002.    YAXIS=20
  1003.    XMID=10
  1004.    YMID=10
  1005.    For Y=0 To YAXIS
  1006.       C=Y
  1007.       For X=XMID To 0 Step -1
  1008.          If C>0
  1009.             Screen Copy SOURCE,X*16,(YMID-C)*10,(XAXIS-X)*16,(YMID+C)*10 To DEST,X*16,(YMID-C)*10
  1010.          End If 
  1011.          Dec C
  1012.       Next X
  1013.    Next Y
  1014.    Screen SOURCE
  1015. End Proc
  1016. Procedure PICCYON_DOWN[SCR]
  1017.    For Y=-211 To 50 Step 15
  1018.       Screen Display SCR,,Y,,200
  1019.       Wait Vbl 
  1020.    Next 
  1021. End Proc
  1022. Procedure BOUNCE[SCR]
  1023.    For LOP=30 To 0 Step -10
  1024.       For LOP1=1 To LOP Step 5
  1025.          Screen Display SCR,,50-LOP1,,200
  1026.          View 
  1027.          Wait Vbl 
  1028.       Next LOP1
  1029.       For LOP2=LOP To 1 Step -5
  1030.          Screen Display SCR,,50-LOP2,,200
  1031.          View 
  1032.          Wait Vbl 
  1033.       Next LOP2
  1034.    Next LOP
  1035.    Screen Display 0,,50,,200
  1036.    View 
  1037. End Proc
  1038.